#include <iostream>
#include <string>

using namespace std;
/*
模板类的使用以及定义

定义
    template <class T = int>
    class Time
    {

    };

使用
    实例化对象 显性的指定 这个类模板的类型
    Time<int> T1

    声明函数
        类内声明 类外定义
    类内
        void set_Time(T hour , T min , T sec);
    类外    编写较为复杂， 但是眼熟即可 因为编辑器会帮你做好
        template <class T>
        void Time<T>::Time::set_Time(T hour , T min , T sec)
        { }

*/
template <class T = int>
class Time
{
private:
    T hour;
    T min;
    T sec;
public:
    Time()
    {

    }
    Time(T hour , T min , T sec)
    {

    }
    ~Time()
    {

    }

public:
    void set_Time(T hour , T min , T sec);
};

// 模板类的 类内声明 类外定义
// template <class T>
// void Time<T>::set_Time(T hour, T min, T sec)
// {
// }

/*
模板类的 类内声明 类外定义
    template <class T>
        声明一个函数模板
    Time 
        声明这个函数是成员函数
    Time<T>
        声明这个成员函数所属的类 是 类模板
*/
template <class T>
void Time<T>::Time::set_Time(T hour , T min , T sec)
{
    this->hour = hour;
    this->min = min;
    this->sec = sec;
}

int main(int argc, char const *argv[])
{
    // 显性调用
    Time<int> T1(10 , 20 , 30);
    T1.set_Time(20 , 30 , 40);
    return 0;
}


